package _go

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
//思路 计算二叉树的深度 顺便记录一下 最大的宽度
var max_dep int

func diameterOfBinaryTree(root *TreeNode) int {
	max_dep = 0 //这是个大坑  不初始化一下 会用到上次的值
	if root == nil {
		return 0
	}
	dfs(root)
	return max_dep
}

func dfs(root *TreeNode) int {
	if root == nil {
		return 0
	}
	l := dfs(root.Left)
	r := dfs(root.Right)

	dep := max(l, r) + 1

	max_dep = max(max_dep, l+r)
	return dep
}

func max(a, b int) int {
	if a > b {
		return a
	} else {
		return b
	}

}
